C++ 项目 使用 CMake 和 Google Test(傻瓜式教程) 您所在的位置:网站首页 cmake add_test C++ 项目 使用 CMake 和 Google Test(傻瓜式教程)

C++ 项目 使用 CMake 和 Google Test(傻瓜式教程)

#C++ 项目 使用 CMake 和 Google Test(傻瓜式教程)| 来源: 网络整理| 查看: 265

本指南将向您展示如何通过Google的测试框架使用CMake和单元测试来设置新的C ++项目。 通过此设置,您可以立即开始使用C ++进行测试驱动的开发。 弄清楚如何将gtest添加到现有项目并开始在旧的(现有)代码库上进行TDD也很简单。

环境:win10 子系统linux ubuntu18.04

确保已经安装了cmake(3.10以上),g++,gcc等基本环境。

最后的效果图:

从github上将 google test 源码clone下来

git clone https://github.com/google/googletest/

gtest 项目里面包含了CMakeLists.txt,所以集成到自己的项目里面是比较简单的(如果你懂cmake的话,如果不懂的话就按照本指南做吧。

文件结构 IndexProject ├── CMakeLists.txt ├── build ├── lib │   └── googletest ├── src │   ├── CMakeLists.txt │   ├── Formula.cpp │   ├── Formula.h │   └── main.cpp └── tst ├── CMakeLists.txt ├── Formula-test.cpp └── main.cpp

下面这个命令是创建这个目录结构

mkdir -p IndexProject/{build,lib,src,tst}

将clone下来的gooletest 文件夹放到项目的lib文件夹下。

大部分的个人的简单项目用以上目录结构应该都没问题,所以这个相当于一个模板吧,供自己以后以及其它菜鸟参考。最好的方式当然是学习CMake,然后自己随心所欲想怎么搞怎么搞,可以CMake想搞明白还挺花时间的,对于时间紧迫的人这个模板是个不错的选择。

CMakeLists.txt

生成target有两种方式,一种直接将文件名一个个列出来,这样的好处是不需要编译不必要的文件。

add_executable(ExampleProject main.cpp file1.cpp file1.h)

还有一种是将所有的文件全编译然后生成执行文件,这样的好处是添加文件后不需要修改CMakeLists.txt就可以直接运行。

file(GLOB_RECURSE SOURCES LIST_DIRECTORIES true *.h *.cpp) 根目录下的CMakeLists.txt # cmake version cmake_minimum_required(VERSION 3.10) # project name project(IndexProject) #采用c++14标准 set(CMAKE_CXX_STANDARD 14) include_directories(src) add_subdirectory(src) add_subdirectory(tst) add_subdirectory(lib/googletest)

这里的include_directories(src)是为了让src下的头文件全局可见。

src 目录下的CMakeLists.txt #设置 BINARY 为项目名IndexProject set(BINARY ${CMAKE_PROJECT_NAME}) # 1 # add_executable(ExampleProject main.cpp file1.cpp file1.h) # 2 file(GLOB_RECURSE SOURCES LIST_DIRECTORIES true *.h *.cpp) set(SOURCES ${SOURCES}) add_executable(${BINARY}_run ${SOURCES}) # 为了让单元测试的时候src下的代码能被作为静态链接库使用 add_library(${BINARY}_lib STATIC ${SOURCES}) tst 目录下的CMakeLists.txt set(BINARY ${CMAKE_PROJECT_NAME}_tst) file(GLOB_RECURSE TEST_SOURCES LIST_DIRECTORIES false *.h *.cpp) set(SOURCES ${TEST_SOURCES}) add_executable(${BINARY} ${TEST_SOURCES}) add_test(NAME ${BINARY} COMMAND ${BINARY}) # 链接src生成的lib库和gtest库 target_link_libraries(${BINARY} PUBLIC ${CMAKE_PROJECT_NAME}_lib gtest) 添加源代码

src/main.cpp:

#include #include "Formula.h" int main() { std::cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有